package cn.core.coding.service.intf;

import cn.core.coding.vo.DbTablesInfoVO;
import cn.core.coding.vo.MysqlDbTableColInfoVO;
import cn.core.coding.vo.MysqlDbTableInfoVO;
import cn.core.coding.vo.MysqlDbTablePkInfoVO;
import cn.core.coding.vo.OracleDbTableColInfoVO;
import cn.core.coding.vo.OracleDbTableInfoVO;
import cn.core.coding.vo.OracleDbTablePkInfoVO;

import java.util.Collection;

/**
 * 获取数据库信息 服务接口
 */
public interface IGetDbInfoService {

  /**
   * 获取mysql数据库所有表信息 通过数据库名
   */
  public Collection<DbTablesInfoVO> getMysqlDbAllTablesInfoByDbName(String dsName, String dbName) throws Exception;

  /**
   * 获取oracle数据库所有表信息
   */
  public Collection<DbTablesInfoVO> getOracleDbAllTablesInfo(String dsName) throws Exception;

  /**
   * 获取mysql数据库表信息
   */
  public MysqlDbTableInfoVO getMysqlDbTableInfo(String dsName, String dbName, String tableName) throws Exception;

  /**
   * 获取mysql数据库表列信息
   */
  public Collection<MysqlDbTableColInfoVO> getMysqlDbTableColInfo(String dsName, String dbName, String tableName) throws Exception;

  /**
   * 获取mysql数据库表主键信息
   */
  public MysqlDbTablePkInfoVO getMysqlDbTablePkInfo(String dsName, String dbName, String tableName) throws Exception;

  /**
   * 获取oracle数据库表信息
   */
  public OracleDbTableInfoVO getOracleDbTableInfo(String dsName, String tableName) throws Exception;

  /**
   * 获取oracle数据库表列信息
   */
  public Collection<OracleDbTableColInfoVO> getOracleDbTableColInfo(String dsName, String tableName) throws Exception;

  /**
   * 获取oracle数据库表主键约束名称
   */
  public String getOracleDbTablePrimaryKeyConstraintName(String dsName, String tableName) throws Exception;

  /**
   * 获取oracle数据库表主键信息
   */
  public OracleDbTablePkInfoVO getOracleDbTablePkInfo(String dsName, String tableName, String primaryKeyConstraintName) throws Exception;

}
